<?php namespace Admin\Controller; 

use Common\Model\Goods;
use Common\Model\Category;
use Common\Model\Brand;
use Common\Model\TypeAttr;
use Common\Model\GoodsAttr;
use Common\Model\GoodsDetail;
//商品控制器
class GoodsController extends CommonController{

	private $goodsModel;
	// 构造方法
	public function __init(){
		// 先调用公共控制器commoncontroller里面的__init方法，
		parent::__init();
		// 实例化属性模型
		$this->goodsModel=new Goods;
	}
	// 商品列表
	public function index(){
		// 查询数据总条数
		// $total=$this->goodsModel->count();
		// 每页显示条数
		// $page = (Page::row(3) -> make($total));
		// 查询数据库
		$goodsData=$this->goodsModel->get();
		// sp($goodsData);
		// sp($total);
		
		// View::with('page', $page);
		// 分配变量
		View::with('goodsData',$goodsData);
		View::make();
	}

	// 单文件上传方法【列表图】
	public function upload_single(){
		//框架上传方法
	 	$file = Upload::path('Upload/Goods/single/' . date('y.m.d'))->make();
		//如果上传失败
	    if (empty($file)) {
	        echo json_encode(Upload::getError());
	    } else {
	    	// 将图片进行缩略
	    	// Image::thumb('file.jpg','new.jpg',200,200,6);
	        /** $file内部就是以下这个数组
	            $file = array(
	                0 => array(
	                'path' => 'Upload/Content/15/8/123981239172.jpg',
	                'url' => 'http://localhost/cms_edu/Upload/Content/15/8/123981239172.jpg',
	                'image' => 1
	            ),
	        );**/
	        //上传成功，把上传好的信息返给js
	        $data = $file[0];
	        echo json_encode($data);exit;
	    }
	}


	// 多文件上传方法【商品图】
	public function upload_more(){
		//框架上传方法
	 	$file = Upload::path('Upload/Goods/more/' . date('y.m.d'))->make();
		//如果上传失败
	    if (empty($file)) {
	        echo json_encode(Upload::getError());
	    } else {
	    	// 缩略图
	    	// path url width height 处理方式
	    	$small=Image::thumb($file[0]['path'],'Upload/Goods/more/'.date('y.m.d').'/small/'.$file[0]['basename'],80,80,5);
	    	$medium=Image::thumb($file[0]['path'],'Upload/Goods/more/'.date('y.m.d').'/mid/'.$file[0]['basename'],400,650,5);
	    	$medium=Image::thumb($file[0]['path'],'Upload/Goods/more/'.date('y.m.d').'/big/'.$file[0]['basename'],400,600,5);
	        /** $file内部就是以下这个数组
	            $file = array(
	                0 => array(
	                'path' => 'Upload/Goods/more/15.11.29/123981239172.jpg'    ,
	                'url' => 'http://localhost/cms_edu/Upload/Goods/more/15.11.29/123981239172.jpg',
	                'image' => 1
	            ),
	        );**/
	        //上传成功，把上传好的信息返给js
	        $data = $file[0];
	        echo json_encode($data);exit;
	    }
	}

	// 添加商品
	public function add(){
		// 先选择分类
		// 查出所有的分类
		// 实例化分类模型
		$cateModel=new Category;
		$cateData=$cateModel->get();
		// sp($cateData);
		// 将查到的分类变成树状结构
		$cateData=Data::tree($cateData,'cname');
		// sp($cateData);
		// 分配变量
		View::with('cateData',$cateData);
		// 实例化品牌模型
		$brandModel=new Brand;
		// 查询所有的商品品牌
		$brandData=$brandModel->get();
		// sp($brandData);
		View::with('brandData',$brandData);
		// 如果用户有提交
		// if(IS_AJAX){
			if(IS_POST){
			// 调用模型的store方法、
			if(!$this->goodsModel->store()){
				//如果有错误那就返回错误信息
				$this->error($this->goodsModel->getError());
				// echo json_encode(array('status'=>false,'message'=>$this->goodsModel->getError()));
			}else{
				$this->success('添加成功',U('Goods/index'));
				// echo json_encode(array('status'=>true,'message'=>'添加成功'));
			}
			exit;

		}

		View::make();
	}

	// 获取商品类型属性方法
	public function getTypeAttr(){
		// 如果是ajax异步提交
		if(IS_AJAX){
			// 获取类型的tid
			$tid=Q('post.tid',0,'intval');
			// 实例化类型属性模型
			$TypeAttrModel=new TypeAttr;
			// 根据类型tid查询类型属性
			$TypeAttrData=$TypeAttrModel->where("type_tid={$tid}")->get();
			 // 将查到的类型属性转换成数组形式【(array)$data将tavalue强制转为数组】
			foreach ((array)$TypeAttrData as $k => $v){
				// 将属性值tavalue转为数组形式
				$TypeAttrData[$k]['tavalue']=explode(',',$v['tavalue']);
			}
			echo json_encode($TypeAttrData);
			exit;
		}
		
	}


	// 删除
	public function del(){

		$this->goodsModel->del();
		View::success('删除成功');
	}


	// 编辑
	public function edit(){
		// 实例化分类模型
		$cateModel=new Category;
		$cateData=$cateModel->get();
		// sp($cateData);
		// 将数据变成树状结构
		$cateData=Data::tree($cateData,'cname');
		View::with('cateData',$cateData);
		// 查询所有的商品品牌
		// 实例化品牌模型
		$brandModel=new Brand;
		$brandData=$brandModel->get();
		View::with('brandData',$brandData);
		// ==================
		// 获取当前商品的gid
		$gid=Q('get.gid',0,'intval');
		// 获取旧数据
		$oldGoodsData=$this->goodsModel->where("gid=$gid")->find();
		// sp($oldGoodsData);
		View::with('oldGoodsData',$oldGoodsData);
		// ====================
		/*// 实例化类型属性模型
		$TypeAttrModel=new TypeAttr;
		// 查询所有商品的类型属性
		$TypeAttrData=$TypeAttrModel->get();
		sp($TypeAttrData);die;*/
		// ========================
		// 实例化类型属性模型
		$goodsAttrModel=new GoodsAttr;
	
		 $oldGoodsAttrData=$goodsAttrModel->join('type_attr','type_attr_taid','=','taid')->where("goods_gid=$gid")->get();
		 // sp($oldGoodsAttrData);
		foreach ($oldGoodsAttrData as $k => $v){
			// sp($v);
			$oldGoodsAttrData[$k]['tavalue']=explode(',',$v['tavalue']);
			// sp($oldGoodsAttrData);
		}
		View::with('oldGoodsAttrData',$oldGoodsAttrData);
		
		// ====================
		// 实例化商品详情模型
		$goodsDetailModel=new GoodsDetail;
		// 查询出商品详情表里面的gid对应的数据
		$oldGoodsDetailData=$goodsDetailModel->where("goods_gid=$gid")->find();
			// print_r($gid);die;
		// sp($oldGoodsDetailData);
		// 将字符串转为数组
			$oldGoodsDetailData['photo']=explode(',',$oldGoodsDetailData['photo']);

		
		// 分配旧数据
		View::with('oldGoodsDetailData',$oldGoodsDetailData);
		// 修改数据
		
		if(IS_POST){
			// 调用模型的edit编辑方法
			if(!$this->goodsModel->edit()){
				//如果修改失败那就返回错误信息
				$this->error($goodsModel->getError());
			}
			// 如果成功那就提示跳转
			$this->success('修改成功',U('Goods/index'));
		}
		View::make();
	}



	
}